package com.skyline.base.service;

import java.util.List;

import com.skyline.base.model.Share;
import com.skyline.base.type.ShareType;
import com.skyline.common.bean.Page;

/**
 * 分享的Service
 * 
 * @author Jairus Chan
 * @version 0.1
 */
public interface ShareService {
	/**
	 * 增加分享
	 * 
	 * @param sharerId
	 *            分享者的ID
	 * @param sharerNickname
	 *            分享者的昵称
	 * @param sharerPortrait
	 *            分享者的头像
	 * @param shareType
	 *            分享类型
	 * @param resourceId
	 *            被分享的资源的Id
	 * @return <br>
	 *         0:表示此用户没有分享过此资源<br>
	 *         1:表示此用户已经分享过此资源
	 */
	public Integer addShare(Long sharerId, String sharerNickname, String sharerPortrait, ShareType shareType, Long resourceId);

	/**
	 * 获取分享者所有的分享信息
	 * 
	 * @param sharerId
	 *            分享者的Id
	 * @param page
	 *            分页
	 * @return
	 */
	public List<Share> getShareBySharerId(Long sharerId, Page page);

	/**
	 * 通过分享者的Id与分享类型来获取他所有的分享
	 * 
	 * @param sharerId
	 *            分享者的Id
	 * @param shareType
	 *            分享类型
	 * @param page
	 * @return
	 */
	public List<Share> getShareBySharerIdAndType(Long sharerId, ShareType shareType, Page page);

	/**
	 * 获取分享
	 * 
	 * @param id
	 *            分享的Id
	 * @return 所查询到分享
	 */
	public Share getShareById(Long id);

	/**
	 * 删除分享
	 * 
	 * @param id
	 *            分享的Id
	 * @param actionerId
	 *            操作者的Id
	 */
	public void deleteShare(Long id, Long actionerId);

	/**
	 * 顶（支持）
	 * 
	 * @param id
	 *            分享的Id
	
	 */
	public void up(Long id);

	/**
	 * 踩（反对）
	 * 
	 * @param id
	 *            分享的Id
	 */
	public void down(Long id);
}
